function faded_signal = apply_multipath_channel(signal, channel_taps)
% apply_multipath_channel - 将信号通过多径信道
%
% 输入参数:
%   signal       - 输入信号
%   channel_taps - 信道抽头系数，复数向量，包含幅度和相位
%
% 输出参数:
%   faded_signal - 经过多径信道后的信号

% 使用卷积模拟多径信道
faded_signal = conv(signal, channel_taps, 'same');

% 归一化信号功率，使输出信号功率与输入信号功率相同
input_power = mean(abs(signal).^2);
output_power = mean(abs(faded_signal).^2);
faded_signal = faded_signal * sqrt(input_power / output_power);

% 显示信道信息
fprintf('多径信道信息:\n');
fprintf('  路径数量: %d\n', length(channel_taps));
fprintf('  路径增益 [dB]: ');
for i = 1:length(channel_taps)
    gain_dB = 20*log10(abs(channel_taps(i)));
    fprintf('%.2f ', gain_dB);
end
fprintf('\n');

% 计算信道冲激响应长度
channel_delay_spread = length(channel_taps) - 1;
fprintf('  最大时延扩展: %d 采样点\n', channel_delay_spread);

end 